package com.ssyan.principle.LiskovSubstition;

/**
 * @author ssyan
 * @Description 七大设计原则之四：里氏替换原则
 * @create 2021/8/25 23:50
 * @Version 1.0
 */
public class LiskovSubstition {
    public static void main(String[] args) {
        A a = new A();
        System.out.println("11-3=" + a.func1(11, 3));
        System.out.println("1-8=" + a.func1(1, 8));

        System.out.println("-------------------------------------");
        B b = new B();
        System.out.println("11-3=" + b.func1(11, 3));//这里本意是求出11-3
        System.out.println("1-8=" + b.func1(1, 8));
        System.out.println("11+3+9="+b.func2(11,3));


    }
}

//A类
class A {
    //返回两个数的差
    public int func1(int num1,int num2) {
        return num1 - num2;
    }
}

//B类继承了A
//增加了一个新功能：完成两个数相加，然后和9求和
class B extends A {
    //这里，重写了A类的方法，可能是无意识
    @Override
    public int func1(int a, int b) {
        return a+b;
    }

    public int func2(int a,int b) {
        return func1(a,b)+9;
    }
}
